<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <style>
      /* 填写样式 */
    </style>
  </head>

  <body>
    <!-- 填写标签 -->
    <script type="text/javascript">
      // 填写JavaScript
      /**
       * 像这种格式化题呢，JS基本都提供了相应的函数，用它们肯定比自己写的靠谱
       * 如果是应用的话，这题使用toLocaleString实现千分位划分足矣
       * 温馨提醒：这种方法在牛客判题平台不支持，用此方法是过不了的
       */
      /*
      function _comma(number) {
        // 补全代码
        return number.toLocaleString();
      }
      console.log(_comma(1234567) === "1,234,567");
      */

      //-----------------------------------------------------------------------------------------------------------------------
      /**
       * 这里咱继续干老本行，掏出大杀器 -> 正则表达式
       * 本来想一个正则表达式解决的，但小数预查寻以小数点为最后标记位而整数不是，对于是否含有小数点的判断，要是放在正则表达式里就大可不必了，
       * 所以我们在外边先判断一下是否含有小数点再用对应的不同方法匹配，做到万无一失
       * 
       * 先提醒一下昂，记得转字符串，传入的是数字
       * 
       * indexOf()当不存在返回-1，欧了
       * 
       * 这里解析一下两个正则表达式，当然它俩其实就只有预查寻结尾条件不同
       * 先说说小数的情况
       * 这里主要是用了预查寻?=，也就是捕获前面的\d并且使后面的内容符合相应条件，
       * 我们需要小数前面的数字从后往前每三个数加一个逗号对吧，(\d{3})+匹配一组或多组三位连续数字
       * 最后/g声明全局搜索，默认是只查一个，我们需要更换所有符合条件的
       * 替换内容就是捕获的内容加`,`
       * 整数的情况呢，整数不就更好判断了，直接让这三个连续数字组靠在结尾不就行了
       * 
       * 然后一交，他喵的，直接不知名错误,大概率是平台故障，不管了，反正咱实现了
       */

      function _comma(number) {
        // 补全代码
        const regexINT = /(\d)(?=(\d{3})+$)/g;
        const regexDEC = /(\d)(?=(\d{3})+\.)/g;
        if (number.toString().indexOf(".")!=-1) {
          return number.toString().replace(regexDEC, "$1,");
        } else {
          return number.toString().replace(regexINT, "$1,");
        }
      }

      //列举一堆测试用例
      console.log(_comma(-1234567.999));
      console.log(_comma(1234567.999));
      console.log(_comma(1234567));
      console.log(_comma(0));
      console.log(_comma(0.1234));
      console.log(_comma(-0.12345));
      console.log(_comma(1234567));
    </script>
  </body>
</html>
